"""
模拟实现python的 @classmethod装饰器，提示classmethod其实也是个构建描述符的类
"""


class ClassMethodNew(object):
    def __init__(self, func):
        print("调用了 classmethod_new类中的__init__方法")
        self.func = func

    def __get__(self, instance, owner):
        print("__get__方法被调用")

        def call(*args, **kwargs):
            self.func(owner, *args, **kwargs)

        return call


class A(object):
    M = 100

    def a(self):
        print("----a 是实例方法----")

    @ClassMethodNew
    def b(cls):
        print("----b 是类方法方法1----")
        print(cls.M)
        print("----b 是类方法方法2----")

    @ClassMethodNew
    def c(cls, num1, num2):
        print("----c 是类方法方法1----")
        print(cls.M + num1 + num2)
        print("----c 是类方法方法2----")


obj = A()
obj.b
# print(obj.b)
obj.b()
# obj.c(11, 22)
